package com.quanyan.user.service;

import com.quanyan.api.APIResponse;
import com.quanyan.comment.response.LableBaseInfo;
import com.quanyan.user.model.db.TbLevel;
import com.quanyan.user.model.db.TbUser;
import com.quanyan.user.model.vo.request.ReqEditUserInfoParam;
import com.quanyan.user.model.vo.request.ReqUserBaseParam;
import com.quanyan.user.model.vo.request.ReqUserInfo;
import com.quanyan.user.model.vo.request.ReqUserVerify;
import com.quanyan.user.model.vo.response.*;
import com.quanyan.user.request.ReqChangePhone;

import java.util.List;
import java.util.Map;

/**
 * Created by zhang on 16/7/1.
 */
public interface UserInformationService {
    /**
     * 用户实名认证
     * @param reqUserVerify
     * @param uid
     * @return
     */
    boolean verify(ReqUserVerify reqUserVerify,int uid);

    /**
     * 获取用户信息
     * @param uid
     * @return
     */
    RespUserInfo getUserInfo(int uid);

    /**
     * 更新用户信息
     * @param reqUserInfo
     * @param uid
     * @return
     */
    int updateUserInfo(ReqUserInfo reqUserInfo, int uid);

    /**
     * 我的二维码名片
     * @param uid
     * @return
     */
    RespUserBaseInfo myQRCode(int uid);

    /**
     * 我的首页信息
     * @param uid
     * @return
     */
    RespUserMine my(int uid,String dsn,int userType);

    /**
     * 我的主页信息
     * @param uid
     * @return
     */
    RespUserIndex index(int uid,String itemType,int currentUid,int userType);

    /**
     * 省市列表
     * @return
     */
    RespSituation situation();

    /**
     * 更新用户基础信息
     * @param requestBaseParam
     * @param uid
     * @return
     */
    int updateUserBaseInfo(ReqUserBaseParam requestBaseParam, int uid);

    /**
     * 获取用户公共参数
     * @param map
     * @return
     */
    List<RespCommonParameter> parameter(Map map);

    /**
     * 更新用户信息
     * @param user
     * @param uid
     * @return
     */
    int updateUser(TbUser user, int uid);


    /**
     * 检查版本更新
     * @param version
     * @param osType
     * @return
     */
    RespCheckVersion checkVersion(int version, int osType, Integer appType);

    /**
     * 更换用户手机号
     * @param reqChangePhone
     * @return
     */
    APIResponse changePhone(ReqChangePhone reqChangePhone);

    /**
     * 删除用户缓存
     * @param uid
     * @return
     */
    void deleteUserCache(Integer uid);

    /**
     * 获取用户状态信息
     * @param uid
     * @return
     */
    APIResponse<RespUserState> getUserState(int uid);


    /**
     * 等级
     * @param commonId
     * @param type
     * @return
     */
    public TbLevel getLevel(int commonId, byte type);


    /**
     * 随机产生标签
     * @param pageSize
     * @return
     */
    APIResponse<List<LableBaseInfo>> randomGenerateLables(Integer pageSize);

    /**
     * 编辑用户信息
     *
     * @return
     */
    boolean editUserInfo(Integer uid, ReqEditUserInfoParam editUserInfoParam);


    /**
     *  获取用户主页 ta的主页  我的主页
     *
     * @param uid 用户id
     * @param taUid 他的用户
     * @return
     */
    APIResponse getUserIndex(Integer uid, Integer taUid);


    /**
     *给用户签名为空的签名字段设置默认值
     *
     * @return
     */
    APIResponse updateUserRedis(List<Integer> uids);

    /**
     * 验证用户账号是否可用
     *
     * @param uid
     * @return true:可用 false: 不可用
     */
    boolean isUserEnable(Integer uid);

}
